import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import './mock/index.js'
import toast from '@/components/common/toast'
import FastClick from 'fastclick'
import VueLazyLoad from 'vue-lazyload'

// 解决 移动端 点击穿透 和300ms的延迟
if ('addEventListener' in document) {
  document.addEventListener(
    'DOMContentLoaded',
    function () {
      // 附加到 body的界面
      FastClick.attach(document.body)
    },
    false
  )
}

// 下面为了 解决图片的懒加载的操作
// 安装插件
Vue.use(VueLazyLoad, {
  preLoad: 1,
  loading: require('./assets/img/lazy/lazyload.jpg'), // 加载成功
  error: require('./assets/img/lazy/error.jpg') // 加载失败
})

// 使用elementUI
Vue.use(ElementUI)
// 安装toast
Vue.use(toast)

// 事件总线对象 挂载事件总线的操作 可以暴露出去
// 负责完成子孙通信
Vue.prototype.$bus = new Vue()


// 只需修改xxxxx值，其余无需修改
Vue.prototype.resetSetItem = function (key, newVal) {
  if (key === 'user') {
    // 创建一个StorageEvent事件
    var newStorageEvent = document.createEvent('StorageEvent');
    const storage = {
      setItem: function (k, val) {
        sessionStorage.setItem(k, val);
        // 初始化创建的事件
        newStorageEvent.initStorageEvent('setItem', false, false, k, null, val, null, null);
        // 派发对象 将数据进行保存和修改
        window.dispatchEvent(newStorageEvent)
      }
    }
    return storage.setItem(key, newVal);
  }
}


Vue.config.productionTip = false
new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')
